Contador de visitas Web con PHP y MYSQL
Contador de visitas Web con PHP y MYSQL. En este artículo vamos a explicar cómo añadir un contador de visitas y la base de datos como medio de almacenamiento con el objetivo de tener un control de las visitas diarias en tu sitio Web y en cualquier página que tengamos, ya sea estática o dinámica.
El contador de visitas será transparente y de fácil aplicación. Se tratará de insertar un código que nos permitirá tener un control de las visitas que recibimos en nuestra Web teniendo en cuenta el día y la dirección URL para evitar duplicaciones en el contador.
Sin embargo, necesitaremos añadir una nueva tabla en la base de datos, para guardar los registros de visitas. La puedes llamar tabla “visitas”.
Los campos utilizados en la tabla serán los siguientes:
- Idvisitas
- enlace
- visitas
Contador de visitas Web con PHP y MYSQL

Vista de los datos almacenados en la base de datos
Los Resultados del contador en la página web lo veremos ver como funciona. Si la página es única se incrementarán las visitas, y si visitan otra URL se guardarán en un nuevo campo como la imagen de arriba.
Ahora crear un archivo llamado visitas.php
En el cual se procesará las visitas todo esto en PHP, si el enlace existe se incrementará las visitas, utilizará cookies para no contabilizar impresiones.
<?php
ob_start();
header("Content-type: text/javascript");
// Creamos la conexion con la base de datos
$con = @mysqli_connect('localhost', 'USUARIO_BD', 'PASSWORD_BD', 'NOMBRE_BD') or die("document.write('Error');");
// Obtenemos, y validamos enlace actual
$enlace = $_SERVER['HTTP_REFERER'];
if (!$enlace || $enlace == '') {
die();
}
// Obtenemos los datos de la base de datos
$sql = "SELECT visitas FROM visitas WHERE enlace='$enlace'";
$query = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($query);
/*creamos los codigos querys verificando primero las cookies, para contar visitas y no impresiones web*/
if (isset($_COOKIE[md5($enlace)])) {
// si existe la cookie solo le damos el valor a $visitas
$visitas = $row['visitas'];
echo "document.write($visitas);";
} elseif (!isset($_COOKIE[md5($enlace)])) {
// Comprobamos si el enlace ya esta en la base de datos
$rows = mysqli_num_rows($query);
if ($rows > 0) {
// Cuando exista lo enlace actualizamos
$SQL = "UPDATE visitas SET visitas=visitas+1 WHERE enlace='$enlace'";
if (mysqli_query($con, $SQL)) { // Si se inserta la visita
$visitas = ($row['visitas']) + (1); // Le sumamos uno para mostrar la visita actual
echo "document.write($visitas);";
setcookie(md5($enlace), '_vStD', time() + 86400); // Y creamos la cookie de 1 dia
} else { // Si no se inserta la visita
$visitas = $row['visitas']; // Solo obtenemos las visitas
echo "document.write($visitas);";
}
} elseif ($rows == 0) {
// Cuando no existe el enlace en la base de datos la insertamos
$SQL = "INSERT INTO visitas (enlace,visitas) VALUES ('$enlace',1)";
if (mysqli_query($con,$SQL)) { // Si se inserta la nueva enlace
echo "document.write(1);";
setcookie(md5($enlace), '_vStD', time() + 86400); // Y creamos la cookie de 1 dia
} else { // Si no se inserta mostramos
echo "document.write(0);";
}
}
}
// Por ultimo cerramos la conexion, y cerramos el script
ob_end_flush();
mysqli_close($con);
die();
?>Y los más principal como insertar en contador en todas nuestras aginas para que se registren las visitas de manera eficiente.
Visitas: <script src="https://localhost/base/conta/misvisitas.php"></script>
Espero que les haya servido, muchas gracias.



